//index.js
import { createAlova } from 'alova';
// v2.0
// import GlobalFetch from 'alova/GlobalFetch';
// v3.0
import adapterFetch from 'alova/fetch';
import VueHook from 'alova/vue'
 
export const AlovaInstance = createAlova({
  // baseURL: '/merchantapi', // ✅ 使用代理前缀
  baseURL: 'https://demo.qqss.net', // ✅ 使用代理前缀
  statesHook: VueHook,
  // 请求适配器，这里我们使用fetch请求适配器
  requestAdapter: adapterFetch (),

  // 设置全局的请求拦截器，与axios相似
  beforeRequest() {},
  responded: {
  
     // 请求成功的拦截器
     // 当使用GlobalFetch请求适配器时，第一个参数接收Response对象
     // 第二个参数为当前请求的method实例，你可以用它同步请求前后的配置信息
     onSuccess: async (response, method) => {
       if (response.status >= 400) {
         throw new Error(response.statusText);
       }
       const json = await response.json();
       
       // 解析的响应数据将传给method实例的transformData钩子函数，这些函数将在后续讲解
       return json;
     },

     // 请求失败的拦截器
     // 请求错误时将会进入该拦截器。
     // 第二个参数为当前请求的method实例，你可以用它同步请求前后的配置信息
     onError: (error, method) => {
       alert(error.message);
     },

     // 请求完成的拦截器
     // 当你需要在请求不论是成功、失败、还是命中缓存都需要执行的逻辑时，可以在创建alova实例时指定全局的`onComplete`拦截器，例如关闭请求 loading 状态。
     // 接收当前请求的method实例
     onComplete: async method => {
       // 处理请求完成逻辑
     }
}
});

